From: Florian Müllner Date: Wed, 8 Feb 2023 00:34:47 +0000 (+0100) Subject: status/volume: Mute/unmute when clicking icon X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~405^2^2~40 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=10b5808f257ba51a0012e6d4803f6e3508e16ba4;p=gnome-shell.git status/volume: Mute/unmute when clicking icon This behavior was lost with the move to quick settings. Now that we allow slider icons to be interactive, we can easily restore the feature (and even in a less-Easter-eggy way) https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5974 Part-of: --- diff --git a/js/ui/status/volume.js b/js/ui/status/volume.js index 79950458d..078805c3e 100644 --- a/js/ui/status/volume.js +++ b/js/ui/status/volume.js @@ -32,7 +32,9 @@ const StreamSlider = GObject.registerClass({ }, }, class StreamSlider extends QuickSlider { _init(control) { - super._init(); + super._init({ + icon_reactive: true, + }); this._control = control; @@ -54,6 +56,13 @@ const StreamSlider = GObject.registerClass({ this._notifyVolumeChange(); }); + this.connect('icon-clicked', () => { + if (!this._stream) + return; + + this._stream.change_is_muted(!this._stream.is_muted); + }); + this._deviceItems = new Map(); this._deviceSection = new PopupMenu.PopupMenuSection(); @@ -204,6 +213,7 @@ const StreamSlider = GObject.registerClass({ let muted = this._stream.is_muted; this._changeSlider(muted ? 0 : this._stream.volume / this._control.get_vol_max_norm()); + this.iconLabel = muted ? _('Unmute') : _('Mute'); this._updateIcon(); this.emit('stream-updated'); }